import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 薪资存储工具类：将员工工资条写入本地文本文件（符合文档1-59要求）
 */
public class SalaryStorage {
    // 存储路径：可根据实际情况修改（如"D:/salary_slips/"）
    private static final String STORAGE_PATH = "salary_slips_";

    /**
     * 存储工资条到文件
     * @param employee 员工对象（普通员工/管理人员，体现多态）
     * @throws IOException  IO异常（文件写入失败）
     * @throws WorkHourException  工作时长异常（普通员工专属）
     * @throws NegativeSalaryException  薪资为负异常
     */
    public static void saveSalarySlip(Employee employee) throws IOException, WorkHourException, NegativeSalaryException {
        // 1. 生成文件名：按“薪资条_月份.txt”命名（如salary_slips_2024-10.txt）
        String fileName = STORAGE_PATH + employee.getMonth() + ".txt";
        // 2. 追加写入文件（BufferedWriter：高效写入，true表示追加不覆盖）
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true))) {
            writer.write(employee.generateSalarySlip()); // 写入工资条内容
            writer.flush(); // 强制刷新缓冲区，确保内容写入
            System.out.println("员工[" + employee.getName() + "]工资条已保存到：" + fileName);
        }
    }
}
